"""
vEngine
"""

from . import (
    ve_application as application,
    ve_assets as assets,
    ve_constants as constants,
    ve_coord as coord,
    ve_data as data,
    ve_event as event,
    ve_exceptions as exceptions,
    ve_globals as globals,
    ve_group as group,
    ve_logger as logger,
    ve_objects as objects,
    ve_typing as typing,
    ve_widget as widget
)

from .ve_logger import get_logger

from .ve_constants import VE_KEYMAP
from .ve_constants import MAP_KEYBOARD
from .ve_constants import MAP_MOUSE
from .ve_constants import MOUSE

from .ve_exceptions import VE_EXIT_CODE
from .ve_exceptions import _type_checker
from .ve_exceptions import _type_guard

from .ve_assets import VE_Color
from .ve_assets import VE_Font
from .ve_assets import VE_FontRender
from .ve_assets import VE_Image
from .ve_assets import VE_Sound

from .ve_coord import Point2d
from .ve_coord import Vec2d
from .ve_coord import Area2d
from .ve_coord import T_Coordinate

from .ve_data import VE_Data
from .ve_data import VE_HashMapStorage
from .ve_data import VE_SequenceStorage

from .ve_globals import VE_ObjectIdPool
from .ve_globals import has_object
from .ve_globals import get_object
from .ve_globals import VE_GroupIdPool
from .ve_globals import has_group
from .ve_globals import get_group
from .ve_globals import VE_DATA_STORAGE
from .ve_globals import get_window
from .ve_globals import get_clock
from .ve_globals import KMstate
from .ve_globals import get_mouse_pos

from .ve_group import VE_Group

from .ve_objects import VE_Object
from .ve_objects import VE_Observerable
from .ve_objects import VE_Moveable
from .ve_objects import VE_Box
from .ve_objects import VE_Clickable
from .ve_objects import VE_Draggable

from .ve_event import T_EventData
from .ve_event import T_EventHandler
from .ve_event import T_EventHandlerWrapper
from .ve_event import VE_EventDispatcher
from .ve_event import VE_EventData

from .ve_widget import VE_TextWidget
from .ve_widget import VE_ImageWidget

from .ve_application import Application

__all__ = [
    "application",
    "assets",
    "constants",
    "coord",
    "data",
    "event",
    "exceptions",
    "globals",
    "group",
    "logger",
    "objects",
    "typing",
    "widget",

    "get_logger",

    "VE_KEYMAP",
    "MAP_KEYBOARD",
    "MAP_MOUSE",
    "MOUSE",

    "VE_EXIT_CODE",
    "_type_checker",
    "_type_guard",

    "VE_Color",
    "VE_Font",
    "VE_FontRender",
    "VE_Image",
    "VE_Sound",

    "Point2d",
    "Vec2d",
    "Area2d",
    "T_Coordinate",

    "VE_Data",
    "VE_HashMapStorage",
    "VE_SequenceStorage",

    "VE_ObjectIdPool",
    "has_object",
    "get_object",
    "VE_GroupIdPool",
    "has_group",
    "get_group",
    "VE_DATA_STORAGE",
    "get_window",
    "get_clock",
    "KMstate",
    "get_mouse_pos",

    "VE_Group",

    "VE_Object",
    "VE_Observerable",
    "VE_Moveable",
    "VE_Box",
    "VE_Clickable",
    "VE_Draggable",

    "T_EventData",
    "T_EventHandler",
    "T_EventHandlerWrapper",
    "VE_EventDispatcher",
    "VE_EventData",

    "VE_TextWidget",
    "VE_ImageWidget",

    "Application",
]